//Andrew Villadsen

import javax.vecmath.Point3d;
import javax.vecmath.Tuple3d;
import javax.vecmath.Vector3d;

//Class Actor abstractly represents a moving agent on the field.
abstract class Actor
{
	Point3d position;
	Vector3d velocity;
	protected double radius;
	MovementRoutine routine;
	
	/***Set Methods***/
	
	public void setMovementRoutine(MovementRoutine r)
	{
		routine = r;
	}
	
	/***End Set Methods***/
	
	
	/***Get Methods***/
	

	public double getRadius()
	{
		return radius;
	}
	
	public Point3d getPosition()
	{
		return position;
	}
	
	public Vector3d getVelocity()
	{
		return velocity;
	}
	
	/***End Get Methods***/
	
	//calls MovementRoutine to determine next step
	public void step()
	{
		Tuple3d[] temp = routine.step();
		position = (Point3d) temp[0];
		velocity = (Vector3d) temp[1];
	}
}